package com.jetinno.utils;

import android.text.TextUtils;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by zhangyuncai on 2021/1/23. OK
 * 说明：时间格式化工具类
 */

public class TimeUtils {

    public static final int DAY = 24 * 60 * 60;
    public static final int HOUR = 60 * 60;
    public static final int MINUTE = 60;

    public static SimpleDateFormat format_dd_MM_yyyy = new SimpleDateFormat("dd-MM-yyyy");
    public static SimpleDateFormat format_yyyy_MM_dd = new SimpleDateFormat("yyyy_MM_dd");
    public static String text_yyyy_MM_dd = "yyyy-MM-dd";
    public static String text_yyyy_MM_dd2 = "yyyyMMdd";
    public static String text_dd_MM_yyyy = "dd-MM-yyyy";
    public static String text_yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";
    public static String text_yyyy_MM_dd_HH_mm_ss2 = "yyyyMMddHHmmss";
    public static String text_yyyy_MM_dd_HH_mm = "yyyy_MM_dd_HH_mm";
    public static String text_yyyy_MM_dd_HH_mm2 = "yyyyMMdd HH:mm";
    public static String text_hh_mm = "HH:mm";

    public static String parseTimeHHmmss(int secondTime) {
        int hour = (int) (secondTime / (60 * 60));//换算成小时
        int minuter = (int) (secondTime % (60 * 60) / 60);//换算成分钟
        int second = (int) (secondTime % (60 * 60) % 60);//换算成秒
        String timeText = String.format("%02d:%02d:%02d", hour, minuter, second);
        return timeText;
    }

    /**
     * 获取开机时间
     *
     * @param time
     * @return
     */
    public static String parseOpenTime(String time) {
        long lTimes = Long.parseLong(time, 16);
        // 获取天
        long days = lTimes / DAY;
        // 获取小时   总数/3600得到总小时数，去掉整数部分就是剩下小时部分
        long hours = (lTimes / HOUR) % 24;
        // 获取分  总数/60得到总分钟数，去掉整数部分就是剩下分钟部分
        long minutes = (lTimes / MINUTE) % 60;
        // 获取秒  对于秒，直接求余
        long seconds = lTimes % MINUTE;
        return String.format("%1$dDay-%2$dHour-%3$dMinuter-%4$dSecond", days, hours, minutes, seconds);
    }

    public static String createFileTimeName() {
        return TimeUtils.format(new Date().getTime(), TimeUtils.text_yyyy_MM_dd_HH_mm);
    }

    public static long getCurrentNumber() {
        return new Date().getTime();
    }

    public static String getCurrentText() {
        return format(new Date(), TimeUtils.text_yyyy_MM_dd_HH_mm2);
    }

    public static String getCurrentYyyyMmDd() {
        return format(new Date(), TimeUtils.text_yyyy_MM_dd2);
    }

    public static String getCurrentHhMm() {
        return format(new Date(), TimeUtils.text_hh_mm);
    }

    /**
     * 转换日期格式
     * 将格式formatStr1转换为formatStr2
     *
     * @param text        例如:yyyy年MM月dd日
     * @param textFormat1 时间格式
     * @param textFormat2 时间格式
     * @return
     */
    public static String switchTextFormatter(String text, String textFormat1, String textFormat2) {
        if (TextUtils.isEmpty(text))
            return "";
        long number = getNumber(text, textFormat1);
        return format(number, textFormat2);
    }


    /**
     * 时间转时间戳
     *
     * @param text       例如:yyyy年MM月dd日
     * @param textFormat 时间格式
     * @return 131 0000 0000 00  13位数的时间戳
     */
    public static long getNumber(String text, String textFormat) {
        SimpleDateFormat format = new SimpleDateFormat(textFormat);
        long time = 0;
        try {
            time = format.parse(text).getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return time;
    }


    /**
     * 格式化时间
     *
     * @param numberText 131 0000 0000 00  13位数的时间戳
     * @param textFormat 时间格式
     * @return
     */
    public static String format(String numberText, String textFormat) {
        try {
            if (!TextUtils.isEmpty(numberText)) {
                if (numberText.length() == 10) {
                    numberText += "000";
                }
                long number = Long.parseLong(numberText);
                return format(number, textFormat);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 格式化时间
     *
     * @param number     131 0000 0000 00  13位数的时间戳
     * @param textFormat 时间格式
     * @return 返回对应的时间格式的字符串
     */
    public static String format(long number, String textFormat) {
        try {
            return format(new Date(number), textFormat);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 格式化时间
     *
     * @param date       new Date(131 0000 0000 00)
     * @param textFormat 时间格式 例如:yyyy年MM月dd日
     * @return 返回对应的时间格式的字符串
     */
    public static String format(Date date, String textFormat) {
        SimpleDateFormat format = new SimpleDateFormat(textFormat);
        String time = format.format(date);
        if (TextUtils.isEmpty(time))
            return "";
        return time;
    }
}

